Map 和 Set
概述
在 JavaScript 中,Map 和 Set 是两种非常有用的数据结构。它们分别用于存储键值对和唯一值的集合。与传统的对象和数组相比,Map 和 Set 提供了更灵活和高效的操作方式。
Map
什么是 Map?
Map 是一种键值对的集合,其中键和值可以是任意类型的数据。与对象不同,Map 中的键可以是任意数据类型,而不仅仅是字符串或符号。
创建和使用 Map
创建 Map
你可以通过 new Map() 来创建一个空的 Map:
const myMap = new Map();
或者通过传递一个二维数组来初始化 Map:
const myMap = new Map([
['key1', 'value1'],
['key2', 'value2']
]);
添加和获取元素
你可以使用 set 方法来添加键值对,使用 get 方法来获取值:
myMap.set('key3', 'value3');
console.log(myMap.get('key3')); // 输出: value3
检查键是否存在
使用 has 方法来检查某个键是否存在于 Map 中:
console.log(myMap.has('key1')); // 输出: true
console.log(myMap.has('key4')); // 输出: false
删除元素
使用 delete 方法来删除某个键值对:
myMap.delete('key1');
console.log(myMap.has('key1')); // 输出: false
清空 Map
使用 clear 方法来清空整个 Map:
myMap.clear();
console.log(myMap.size); // 输出: 0
遍历 Map
你可以使用 for...of 循环来遍历 Map 中的键值对:
for (let [key, value] of myMap) {
console.log(`${key} = ${value}`);
}
或者使用 forEach 方法:
myMap.forEach((value, key) => {
console.log(`${key} = ${value}`);
});
Set
什么是 Set?
Set 是一种存储唯一值的集合。与数组不同,Set 中的元素是唯一的,不会重复。
创建和使用 Set
创建 Set
你可以通过 new Set() 来创建一个空的 Set:
const mySet = new Set();
或者通过传递一个数组来初始化 Set:
const mySet = new Set([1, 2, 3, 4]);
添加和删除元素
你可以使用 add 方法来添加元素,使用 delete 方法来删除元素:
mySet.add(5);
console.log(mySet.has(5)); // 输出: true
mySet.delete(5);
console.log(mySet.has(5)); // 输出: false
检查元素是否存在
使用 has 方法来检查某个元素是否存在于 Set 中:
console.log(mySet.has(1)); // 输出: true
console.log(mySet.has(5)); // 输出: false
清空 Set
使用 clear 方法来清空整个 Set:
mySet.clear();
console.log(mySet.size); // 输出: 0
遍历 Set
你可以使用 for...of 循环来遍历 Set 中的元素:
for (let item of mySet) {
console.log(item);
}
或者使用 forEach 方法:
mySet.forEach(item => {
console.log(item);
});
实践练习
练习 1: 使用 Map 存储用户信息
创建一个 Map 来存储用户信息(用户名和年龄),并实现以下功能:
- 添加用户。
- 查找用户。
- 删除用户。
const users = new Map();
// 添加用户
users.set('Alice', 25);
users.set('Bob', 30);
// 查找用户
console.log(users.get('Alice')); // 输出: 25
// 删除用户
users.delete('Bob');
console.log(users.has('Bob')); // 输出: false
练习 2: 使用 Set 存储唯一数字
创建一个 Set 来存储一组唯一的数字,并实现以下功能:
- 添加数字。
- 检查数字是否存在。
- 删除数字。
const numbers = new Set();
// 添加数字
numbers.add(1);
numbers.add(2);
numbers.add(3);
// 检查数字是否存在
console.log(numbers.has(2)); // 输出: true
// 删除数字
numbers.delete(2);
console.log(numbers.has(2)); // 输出: false
总结
Map 和 Set 是 JavaScript 中非常有用的数据结构,它们提供了更灵活和高效的方式来存储和操作数据。通过本教程,你应该已经掌握了如何创建、使用和遍历 Map 和 Set,并能够在实际编程中应用这些知识。
希望你能通过实践练习进一步巩固所学内容,并在未来的编程中灵活运用 Map 和 Set。